package com.liuyc.lib.tools.ext

/**
 * 版本比较扩展类 主要扩展在 Int 和 String 上
 *
 * 刘隽
 */

/**
 * string 类型版本判断。
 * 不允许中间出现任何非数字 字符串
 * 判断规则
 *  根据 . 为分隔符进行判断。
 *  先判断最小长度上，大家的值是否有差异，
 *  无差异，在判断 哪个长度更长
 *
 *  tagCode 大 则返回  大于 0
 *  tagCode 小 则方法 小于 0
 *  相等 则返回 0
 *
 */
fun String.versionCompare(tagCode: String): Int {
    //将 当前版本和 目标版本均 小写
    var currentVersion = this.toLowerCase()
    var tagVersion = tagCode.toLowerCase()

    var currentCodeList = currentVersion.split(".")
    var tagCodeList = tagVersion.split(".")
    //获取最小的 长度
    var minSize = Math.min(currentCodeList.size, tagCodeList.size)

    var differCode = 0;

    for (i in 0 until minSize) {
        var currentCode = currentCodeList[i].toIntDefault()
        var tagCode = tagCodeList[i].toIntDefault()

        differCode = tagCode - currentCode
        if (differCode != 0) break

    }
    //差异值为 0 则判断超出最小长度的那一段
    if (differCode == 0) {
        differCode = tagCodeList.size - currentCodeList.size

    }

    return differCode
}